package com.cmz.common.api.enums;

import com.cmz.common.api.dto.StandardParamDefinition;

import java.io.Serializable;

/**
 * 参数定义枚举接口
 * @author cmz
 */
public interface ParamDefEnum extends Serializable {

    /**
     * 获取参数键
     * @return 参数键
     */
    default String getKey() {
        return this.toString();
    }

    /**
     * 获取参数名称
     * @return 参数名称
     */
    String getName();

    /**
     * 获取参数描述
     * @return 参数描述
     */
    String getDesc();

    /**
     * 获取参数默认值
     * @return 参数默认值
     */
    Object getDefaultValue();

    /**
     * 转换为数据传输对象
     * @return 数据传输对象
     */
    default StandardParamDefinition toDTO() {
        StandardParamDefinition standardParamDefinition = new StandardParamDefinition();
        standardParamDefinition.setKey(this.getKey());
        standardParamDefinition.setName(this.getName());
        standardParamDefinition.setDesc(this.getDesc());
        standardParamDefinition.setDefaultValue(this.getDefaultValue());
        return standardParamDefinition;
    }

}
